iT邦幫忙

2021 iThome 鐵人賽

DAY 17
0
AI & Data

從資料庫到資料分析視覺化系列 第 17

{DAY 17} Pandas 學習筆記part.3

  • 分享至 

  • xImage
  •  

前言

Pandas 是強大的資料科學分析工具,

今天要進入DataFrame的介紹

首先簡介Dataframe

又可以稱作資料框架,是表格型的資料結構

我們生活中常見的類似例子為Excel表格

可以想成DataFrame是Pandas裡的Excel表格

實際上是由多個 Series 組合起來的資料結構

通常用來封裝、處理二維的資料

今天練習的分別是

  1. 建立DataFrame
  2. 取得特定資料

看的課程是Coursera上的 Introduction to Data Science in Python

Coursera | Online Courses & Credentials From Top Educators. Join for Free | Coursera

下面的練習是利用上課教的還有以前在學校教過的

重新整理有關DataFrame的筆記

建立DataFrame

  • 首先先利用 Series來建立 Dataframe,看看Dataframe的架構

    假設現在想建立顧客檔案,先利用Series建立每個顧客的名字、居住的城市跟年齡

    import pandas as pd
    
    n_1 = pd.Series({"Name":"Sunny","City":"Taipei","Age":"18"})
    n_2 = pd.Series({"Name":"Kevin","City":"Taipei","Age":"21"})
    n_3 = pd.Series({"Name":"Pennt","City":"Hsinchie","Age":"24"})
    

    再把每個顧客的資訊利用 Series做出來之後,轉換成Dataframe的形式,並且指定index

    df = pd.DataFrame([n_1,n_2,n_3], index = ["customer1","customer2","customer3"])
    df.head()
    

    來檢查變成DataFrame之後的形式


    可以看到DataFrame將資料排列的很好解讀,二維的架構就跟前幾週在SQL介紹的一樣

  • 接下來來換另外一種生成DataFrame的方式,使用Dictionary的形式產生

    customers = [{"Name":"Sunny","City":"Taipei","Age":"18"},
                {"Name":"Kevin","City":"Taipei","Age":"21"},
                {"Name":"Ray","City":"Hsinchiu","Age":"24"}]
    df = pd.DataFrame(customers,index = ["customer1","customer2","customer3"])
    df.head()
    

取得特定資料

1. 要取出想要的row資料時

在DataFrame我們使用的方法跟在Series一樣,可以用`iloc.[ ]`, `loc[ ]`
  • 如果index只輸入單一值而且該值屬於唯一值,就會回傳該row的所有資料

    假設現在想找出顧客2的所有資訊

    可以用.loc[ ],使用欄位名稱查詢

    df.loc["customer2"]
    

    可以看到顯示出來有關顧客2Kevin的所有資料

    現在來檢查這個回傳的資料型態是什麼

    type(df.loc["customer2"])
    '''
    pandas.core.series.Series
    '''
    

    可以確定若是輸入的index是單一值而且該值屬於唯一值

    回傳的資料就會是Series的型態

    也可以使用ioc.[ ],利用索引值找到同樣的顧客二資訊

    df.iloc[1]
    

  • 如果index在資料表裡不是唯一值

    現在假設原始資料的顧客四輸入時出現差錯

    將第四位客人的index寫成第一位客人

    讓新的資料表裡標示為第一位客人的資料有兩筆

    customers_1 = [{"Name":"Sunny","City":"Taipei","Age":"18"},
                {"Name":"Kevin","City":"Taipei","Age":"21"},
                {"Name":"Ray","City":"Hsinchiu","Age":"24"},
                {"Name":"Jane","City":"Taichung","Age":"27"}]
    df_1 = pd.DataFrame(customers_1,index = ["customer1","customer2","customer3","customer1"])
    df_1.head()
    

    接下來試著找出有關customer1的資料

    並且檢查回傳的資料型態

    df_1.loc["customer1"]
    

    type(df_1.loc["customer1"])
    '''
    pandas.core.frame.DataFrame
    '''
    

    可以得知當index不為唯一值時

    pandas會回傳資料型態為DataFrame的結果

  • .loc [ ] 也可以用在不同維度的資料索取

    現在想知道顧客2居住的城市的話

    就可以先從row的index開始

    再到column裡檢索

    在中括號內利用逗號隔開兩個條件

    df.loc["customer2","City"]
    '''
    'Taipei'
    '''
    

    這種方式還有另外一個寫法

    df.loc["customer2"]["City"]
    '''
    'Taipei'
    '''
    

    會得到同樣的結果

    這種把回傳值再傳到下一個指令的方法叫做**"Chaining"**

    這個方式是產生一個複製過後的新的DataFrame

    第二種方式有slicing的性質

    如果想要擷取所有顧客的"Name"還有"City",可以先在row裡用":"找出所有row,再利用list指定想要的column

    df.loc[:,["Name","City"]]
    

  • 現在若是想用.loc[ ] 找到column裡的資料

    方法一是將表格轉置

    讓column跟row對調,使用.T

    df.T
    

    先來看看轉置之後的表格會變成怎樣

    接下來就可以用row查詢想要的值

    如果想找出顧客的所在城市資訊

    df.T.loc["City"]
    

2. 取出Column裡的資料

  • 可以直接使用[ ],裡面放column的欄位名稱

    當我們知道所有的顧客名字時

    df["Name"]
    

    直接在[ ]裡放上欄位名稱即可

  • 還有另外一種表示法,可以直接利用.欄位名稱,記得不用加上引號

    df.Name
    

    可以看到兩個方法回傳的答案會是一致的

小結

今天練習的是DataFrame的基本操作

簡單的產生DataFrame

還有練習資料的查詢

這些概念衍伸了執行Series會用到的語法

還有SQL關於資料庫的概念

Pandas的世界博大精深

明天繼續探索


上一篇
{DAY 16} Pandas 學習筆記 part.2
下一篇
{DAY 18} Pandas 學習筆記part.4
系列文
從資料庫到資料分析視覺化30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言